1. Field of the Invention
This invention relates to redirecting an instruction pointer and more particularly relates to redirecting an instruction pointer to execute recovery software instructions.
2. Description of the Related Art
Data processing devices (“DPD”) such as computers, servers, personal digital assistants, embedded controllers, and the like typically store software instructions and data, herein referred to collectively as software instructions, in memory. Memory may include dynamic random access memory (“DRAM”), static random access memory (“SRAM”), read only memory (“ROM”), Flash random access memory (“Flash RAM”), and the like.
The DPD also typically includes a processor module. The processor module retrieves or reads software instructions from the memory. The software instructions direct the operation of the processor module. The processor module cannot function without the proper software instructions.
In one embodiment, the processor module includes an instruction pointer module that is configured to address a memory location. The processor module may read a first software instruction from the address of the instruction pointer module. In addition, the processor module may increment the address of the instruction pointer after reading the first software instruction to a subsequent second software instruction or may write a new address to the instruction pointer module as directed by the first software instruction.
Unfortunately, software instructions may be stored to an inoperative or bad memory location. The bad memory location cannot store and retrieve a valid software instruction. As a result, a processor module reading a software instruction from a bad memory has a read error and may cease to function properly or hang.
A DPD often executes memory diagnostics to detect bad memory before software instructions are stored in the bad memory. Unfortunately, the DPD may load the memory diagnostics into bad memory, resulting in the DPD hanging during the memory diagnostics and preventing the detection of the bad memory.
From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method that redirects the instruction pointer module of a DPD to valid software instructions if a read error occurs. Beneficially, such an apparatus, system, and method would enable a DPD to recover from reading a software instruction from bad memory.